home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!nic.MR.NET!hal!ncoast!allbery
- From: george@rebel.UUCP (George M. Sipe)
- Newsgroups: comp.sources.misc
- Subject: v05i005: (official) update #1 to vis
- Message-ID: <49579@rebel.UUCP>
- Date: 28 Oct 88 02:21:55 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: george@rebel.UUCP (George M. Sipe)
- Organization: Tolerant Systems, Atlanta GA
- Lines: 452
- Approved: allbery@ncoast.UUCP
-
- Posting-number: Volume 5, Issue 5
- Submitted-by: "George M. Sipe" <george@rebel.UUCP>
- Archive-name: vis.Patch1
-
- This update adds two useful new features to vis, the program recently
- posted which makes any command "screen oriented":
-
- 1. Steve Alter (alter@ttidca.tti.com) added the capability
- to fully suppress the status line via a new -h option.
- This permits the full screen to be used to display the
- output of the command.
-
- 2. Anton Chernoff (abc@lpi.uucp) added the capability to
- highlight characters changed since the last pass by the
- use of standout mode, specified with a new -s option.
-
- George M. Sipe, Phone: (404) 662-1533
- Tolerant Systems, 6961 Peachtree Industrial, Norcross, GA 30071
- UUCP: ...!{decvax,hplabs,linus,rutgers,seismo}!gatech!rebel!george
-
-
- #! /bin/sh
- # This is a shell archive, meaning:
- # 1. Remove everything above the #! /bin/sh line.
- # 2. Save the resulting text in a file.
- # 3. Execute the file with /bin/sh (not csh) to create:
- # README.diff
- # vis.c.diff
- # vis.man.diff
- # This archive created: Sun Oct 23 16:08:40 1988
- export PATH; PATH=/bin:/usr/bin:$PATH
- if test -f 'README.diff'
- then
- echo shar: "will not over-write existing file 'README.diff'"
- else
- cat << \X > 'README.diff'
- *** README_orig Sun Oct 23 15:10:24 1988
- --- README Sun Oct 23 15:48:18 1988
- ***************
- *** 45,47
- George M. Sipe (rebel!george) to the point where Dan
- would no longer recoginze it. No copyright notices
- were embodied in the original net distribution.
-
- --- 45,51 -----
- George M. Sipe (rebel!george) to the point where Dan
- would no longer recoginze it. No copyright notices
- were embodied in the original net distribution.
- +
- + Steve Alter (alter@ttidca.tti.com) added the -h option.
- +
- + Anton Chernoff (abc@lpi.uucp) added the -s option.
- X
- fi
- if test -f 'vis.c.diff'
- then
- echo shar: "will not over-write existing file 'vis.c.diff'"
- else
- cat << \X > 'vis.c.diff'
- *** vis.c_orig Sun Oct 23 15:10:30 1988
- --- vis.c Sun Oct 23 15:47:01 1988
- ***************
- *** 27,32
- Sipe (rebel!george) to the point where Dan would no longer
- recoginze it. No copyright notices were embodied in the
- original net distribution.
- */
-
- #include <stdio.h>
-
- --- 27,36 -----
- Sipe (rebel!george) to the point where Dan would no longer
- recoginze it. No copyright notices were embodied in the
- original net distribution.
- +
- + Steve Alter (alter@ttidca.tti.com) added the -h option.
- +
- + Anton Chernoff (abc@lpi.uucp) added the -s option.
- */
-
- #include <stdio.h>
- ***************
- *** 120,125
- int sw;
- int badsw = 0;
- int baseline = BASELINE;
- long nextcycle;
- long curtime;
- long delta;
-
- --- 124,134 -----
- int sw;
- int badsw = 0;
- int baseline = BASELINE;
- + int doheader = 1;
- + int flagchanges = 0;
- + int flagch = 0;
- + int y, x;
- + int somode;
- long nextcycle;
- long curtime;
- long delta;
- ***************
- *** 134,140
- (void) signal(SIGINT, terminate); /* exit when requested */
- (void) signal(SIGPIPE, SIG_IGN); /* when output > screen size */
-
- ! while ((sw = getopt (argc, argv, "d:f")) != EOF)
- switch (sw) {
- case 'f':
- force = !force;
-
- --- 143,149 -----
- (void) signal(SIGINT, terminate); /* exit when requested */
- (void) signal(SIGPIPE, SIG_IGN); /* when output > screen size */
-
- ! while ((sw = getopt (argc, argv, "d:fhs")) != EOF)
- switch (sw) {
- case 'd':
- wait_delay = atoi(optarg);
- ***************
- *** 136,144
-
- while ((sw = getopt (argc, argv, "d:f")) != EOF)
- switch (sw) {
- - case 'f':
- - force = !force;
- - break;
- case 'd':
- wait_delay = atoi(optarg);
- if (wait_delay < 1) wait_delay = 1;
-
- --- 145,150 -----
-
- while ((sw = getopt (argc, argv, "d:fhs")) != EOF)
- switch (sw) {
- case 'd':
- wait_delay = atoi(optarg);
- if (wait_delay < 1) wait_delay = 1;
- ***************
- *** 143,148
- wait_delay = atoi(optarg);
- if (wait_delay < 1) wait_delay = 1;
- break;
- case '?':
- default:
- badsw = 1;
-
- --- 149,164 -----
- wait_delay = atoi(optarg);
- if (wait_delay < 1) wait_delay = 1;
- break;
- + case 'f':
- + force = !force;
- + break;
- + case 'h':
- + doheader = 0;
- + baseline = 0;
- + break;
- + case 's':
- + flagchanges = !flagchanges;
- + break;
- case '?':
- default:
- badsw = 1;
- ***************
- *** 152,158
- argc -= optind;
- if (badsw || argc < 1) {
- (void) fprintf(stderr,
- ! "Usage: %s [-d delay] [-f] command [args]\n", cmd);
- exit (-1);
- }
- initscr();
-
- --- 168,175 -----
- argc -= optind;
- if (badsw || argc < 1) {
- (void) fprintf(stderr,
- ! "Usage: %s [-d delay] [-f] [-h] [-s] command [args]\n",
- ! cmd);
- exit (-1);
- }
- initscr();
- ***************
- *** 163,176
- shcmd[2] = cmd;
- shcmd[3] = (char *) 0;
- }
- ! if (wait_delay != DELAY) {
- ! if (strlen(cmd) > COLS-39)
- ! (void) sprintf(cmd, "%.*s...", COLS-42, cmd);
- ! mvprintw(0, max((COLS-11)/2, strlen(cmd)+15), "Delay: %d",
- ! wait_delay);
- ! } else if (strlen(cmd) > COLS-21)
- ! (void) sprintf(cmd, "%.*s...", COLS-24, cmd);
- ! mvprintw(0, 0, "Command: %s", cmd);
- noecho(); /* don't let typing ruin our painting */
- nextcycle = time(0) + wait_delay;
- while (1) {
-
- --- 180,195 -----
- shcmd[2] = cmd;
- shcmd[3] = (char *) 0;
- }
- ! if (doheader) {
- ! if (wait_delay != DELAY) {
- ! if (strlen(cmd) > COLS-39)
- ! (void) sprintf(cmd, "%.*s...", COLS-42, cmd);
- ! mvprintw(0, max((COLS-11)/2, strlen(cmd)+15),
- ! "Delay: %d", wait_delay);
- ! } else if (strlen(cmd) > COLS-21)
- ! (void) sprintf(cmd, "%.*s...", COLS-24, cmd);
- ! mvprintw(0, 0, "Command: %s", cmd);
- ! }
- noecho(); /* don't let typing ruin our painting */
- nextcycle = time(0) + wait_delay;
- while (1) {
- ***************
- *** 174,180
- noecho(); /* don't let typing ruin our painting */
- nextcycle = time(0) + wait_delay;
- while (1) {
- ! mvprintw(0, COLS - 10, "Exec: %d", ++iteration);
- if (iteration == 1) refresh();
- (void) pipe(fildes);
- /* fork and exec redirecting stdout thru pipe to curses */
-
- --- 193,200 -----
- noecho(); /* don't let typing ruin our painting */
- nextcycle = time(0) + wait_delay;
- while (1) {
- ! if (doheader)
- ! mvprintw(0, COLS - 10, "Exec: %d", ++iteration);
- if (iteration == 1) refresh();
- (void) pipe(fildes);
- /* fork and exec redirecting stdout thru pipe to curses */
- ***************
- *** 191,196
- if (!(fp = fdopen(pinput, "r"))) terminate(-3);
- (void) close(poutput);
- curline = baseline;
- move(curline, 0);
- /* read the command's output */
- while ((c = getc(fp)) != EOF && !ferror(fp) && curline < LINES)
-
- --- 211,217 -----
- if (!(fp = fdopen(pinput, "r"))) terminate(-3);
- (void) close(poutput);
- curline = baseline;
- + somode = 0;
- move(curline, 0);
- getyx(stdscr, y, x);
- /* read the command's output */
- ***************
- *** 192,197
- (void) close(poutput);
- curline = baseline;
- move(curline, 0);
- /* read the command's output */
- while ((c = getc(fp)) != EOF && !ferror(fp) && curline < LINES)
- if (c == '\n') {
-
- --- 213,219 -----
- curline = baseline;
- somode = 0;
- move(curline, 0);
- + getyx(stdscr, y, x);
- /* read the command's output */
- while ((c = getc(fp)) != EOF && !ferror(fp) && curline < LINES)
- {
- ***************
- *** 194,204
- move(curline, 0);
- /* read the command's output */
- while ((c = getc(fp)) != EOF && !ferror(fp) && curline < LINES)
- ! if (c == '\n') {
- ! clrtoeol();
- ! move(++curline, 0);
- ! }
- ! else addch(c);
- if (ferror(fp)) terminate(-4);
- if (baseline > 1 && curline == LINES && c != EOF)
- --baseline;
-
- --- 216,250 -----
- getyx(stdscr, y, x);
- /* read the command's output */
- while ((c = getc(fp)) != EOF && !ferror(fp) && curline < LINES)
- ! {
- !
- ! if (c == '\n') {
- ! if (x < COLS-1) clrtoeol();
- ! move(++curline, 0);
- ! getyx(stdscr, y, x);
- ! }
- ! else {
- ! if (x >= COLS-1)
- ! continue;
- ! getyx(stdscr, y, x);
- ! if (flagch)
- ! if ((c & 0177) == (inch() & 0177)) {
- ! if (somode) {
- ! standend();
- ! somode = 0;
- ! }
- ! }
- ! else {
- ! if (!somode) {
- ! standout();
- ! somode = 1;
- ! }
- ! }
- ! addch(c);
- ! }
- ! }
- ! if (somode) standend();
- ! flagch = flagchanges;
- if (ferror(fp)) terminate(-4);
- if (baseline > 1 && curline == LINES && c != EOF)
- --baseline;
- ***************
- *** 210,216
- (void) wait(&status); /* wait for child to terminate */
- /* if child didn't terminate properly, w_status will != 0 */
- if (status.w_status) {
- ! mvprintw(0, COLS - 12, "!");
- if (!force) terminate(status.w_status);
- }
- curtime = time(0);
-
- --- 256,263 -----
- (void) wait(&status); /* wait for child to terminate */
- /* if child didn't terminate properly, w_status will != 0 */
- if (status.w_status) {
- ! if (doheader)
- ! mvprintw(0, COLS - 12, "!");
- if (!force) terminate(status.w_status);
- }
- curtime = time(0);
- X
- fi
- if test -f 'vis.man.diff'
- then
- echo shar: "will not over-write existing file 'vis.man.diff'"
- else
- cat << \X > 'vis.man.diff'
- *** vis.man_orig Sun Oct 23 15:10:27 1988
- --- vis.man Sun Oct 23 15:47:13 1988
- ***************
- *** 1,4
- ! .TH VIS l "21 July 1988"
- .SH NAME
- vis \- repeatedly run command, refreshing screen
- .SH SYNTAX
-
- --- 1,4 -----
- ! .TH VIS l "24 October 1988"
- .SH NAME
- vis \- repeatedly run command, refreshing screen
- .SH SYNTAX
- ***************
- *** 2,8
- .SH NAME
- vis \- repeatedly run command, refreshing screen
- .SH SYNTAX
- ! .B vis "[-d delay] [-f] command [args]"
- .SH DESCRIPTION
- .I Vis
- repeatedly executes a specified
-
- --- 2,8 -----
- .SH NAME
- vis \- repeatedly run command, refreshing screen
- .SH SYNTAX
- ! .B vis "[-d delay] [-f] [-h] [-s] command [args]"
- .SH DESCRIPTION
- .I Vis
- repeatedly executes a specified
- ***************
- *** 67,72
- status line by a ``!'' flag whenever a non-zero status has been returned
- by
- .B command .
- .SH EXAMPLES
- vis ps
- .IP "" 5
-
- --- 67,85 -----
- status line by a ``!'' flag whenever a non-zero status has been returned
- by
- .B command .
- + .TP
- + .B -h
- + causes the entire status line and the following blank line to be
- + suppressed, which leaves the full screen available for the output of
- + .B command .
- + .TP
- + .B -s
- + causes
- + .I vis
- + to use standout mode for any bytes that have changed between the
- + previous execution of
- + .B command
- + and the current one.
- .SH EXAMPLES
- vis ps
- .IP "" 5
- ***************
- *** 77,82
- .IP "" 5
- Display the system users and disk usage statistics every 60 seconds.
- Separate the two with a blank line.
- .SH "SEE ALSO"
- User Commands (1): sh, csh
- .SH DIAGNOSTICS
-
- --- 90,100 -----
- .IP "" 5
- Display the system users and disk usage statistics every 60 seconds.
- Separate the two with a blank line.
- + .PP
- + vis -s ls -l
- + .IP "" 5
- + Continually display a long directory listing, highlighting via standout
- + mode the parts that change each time.
- .SH "SEE ALSO"
- User Commands (1): sh, csh
- .SH DIAGNOSTICS
- ***************
- *** 94,96
- It has been substantially enhanced and generalized by George M. Sipe
- (currently - 7/88, at rebel!george) to the point where Dan would no
- longer recognize it.
-
- --- 112,118 -----
- It has been substantially enhanced and generalized by George M. Sipe
- (currently - 7/88, at rebel!george) to the point where Dan would no
- longer recognize it.
- + .PP
- + Steve Alter (alter@ttidca.tti.com) added the -h option.
- + .PP
- + Anton Chernoff (abc@lpi.uucp) added the -s option.
- X
- fi
- exit 0
- # End of shell archive
-
- --
- George M. Sipe, Phone: (404) 662-1533
- Tolerant Systems, 6961 Peachtree Industrial, Norcross, GA 30071
- UUCP: ...!{decvax,hplabs,linus,rutgers,seismo}!gatech!rebel!george
-